//
//  OAuthViewController.swift
//  sinaDemo
//
//  Created by mac on 15/12/13.
//  Copyright © 2015年 zhouxubin. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD

class OAuthViewController: UIViewController {
    
    // 定义webview
    var webView = UIWebView()
    
    override func loadView() {
        view = webView
        webView.delegate = self
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = UIColor.redColor()
        // Do any additional setup after loading the view.
        
        // 加载授权页面
        loadOAuthPage()
    }
    
    // 加载授权页面
    private func loadOAuthPage() {
        let urlStr = "https://api.weibo.com/oauth2/authorize" + "?client_id=\(client_id)" + "&redirect_uri=\(redirect_uri)"
        
        // 发送请求
        let url = NSURL(string: urlStr)
        
        webView.loadRequest(NSURLRequest(URL: url!))
    }

}

extension OAuthViewController: UIWebViewDelegate {
    // 加载失败
    func webView(webView: UIWebView, didFailLoadWithError error: NSError?) {
//        SVProgressHUD.showErrorWithStatus("网络繁忙,请稍后再试!")
    }
    
    // 是否允许加载网页
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {

        // 截取code
        guard let urlString = request.URL?.absoluteString else {
            // 如果请求的url没有值得话就直接返回
            return false
        }
        
        // 如果有这个前缀的话就加载
        if urlString.hasPrefix("https://api.weibo.com") {
            return true
        }
        print(request.URL?.absoluteString)
        // 如果前缀有百度的话就不加载
        if urlString.hasPrefix("http://www.baidu.com") {
            // 截取字符串 code=02896ff585a3b7cde4214360bdd84b44
            let code = request.URL?.query?.substringFromIndex("code=".endIndex)
            
            getAccessToken(code!)
            
            return false
        }
        
        return true
    }
    
    // 获取数据
    private func getAccessToken(code: String) {
        UserAccountViewModel().getAccessToken(code) { () -> () in
            // 获取数据后的回调Á
//            self.dismissViewControllerAnimated(true, completion: nil)
            // 切换跟控制器
//            UIApplication.sharedApplication().keyWindow?.rootViewController = MainTabBarController()
            self.dismissViewControllerAnimated(true, completion: { () -> Void in
                // 等页面dismiss之后再发出切换页面的通知
                notificationCenter.postNotificationName(switchRootVCNotification, object: "welcome")
            })
        }
    }
    
    /*
    source	false	string	采用OAuth授权方式不需要此参数，其他授权方式为必填参数，数值为应用的AppKey。
    access_token	false	string	采用OAuth授权方式为必填参数，其他授权方式不需要此参数，OAuth授权后获得。
    uid	false	int64	需要查询的用户ID。
    screen_name	false	string	需要查询的用户昵称。
    
    
    client_id	true	string	申请应用时分配的AppKey。
    client_secret	true	string	申请应用时分配的AppSecret。
    grant_type	true	string	请求的类型，填写authorization_code
    
    grant_type为authorization_code时
    必选	类型及范围	说明
    code	true	string	调用authorize获得的code值。
    redirect_uri	true	string	回调地址，需需与注册应用里的回调地址一致
    */
    
    // 完成加载网页
    func webViewDidFinishLoad(webView: UIWebView) {
        SVProgressHUD.dismiss()
    }
    
    // 开始加载网页
    func webViewDidStartLoad(webView: UIWebView) {
        SVProgressHUD.showWithStatus("正在登陆...")
    }
}
